#ifndef ENGINE_GAME_STATE_H
#define ENGINE_GAME_STATE_H

/// \file 
/// \author Martin Dubcovsky
/// \date March 22, 2008
/// \brief This file declares \c enum GameTrait and \c struct GameState
#include <bitset>

namespace engine{

/// A list of traits accounted for in a engine::GameState
/// \todo Add more traits
enum GameTrait {
    GAME_STARTED = 0,
    GAME_PAUSED,
    GAME_FINISHED,
    GAME_LOAD_SCREEN,
    GAME_PRE_GAME_MENU,
    GAME_IN_GAME_MENU,
    GAME_CONNECTED,    
    GAME_TRAIT_COUNT ///< This value is last in order to automatically count the number of GameTraits
};

/// A GameState is currently nothing more than an std::bitset
/// templated to have GAME_TRAIT_COUNT traits
/// \remark Consideration for future refactoring; make GameState a derivation of
/// engine::State and include further information, such as timers, 
typedef std::bitset<GAME_TRAIT_COUNT> GameState;


}

#endif //ENGINE_GAME_STATE_H